/**
 * 入口文件
 * Vue.use(~) 专注挂载vue插件，插件是对象则必须提供install方法，是函数则会被作为install方法。当install方法同一个插件多次调用，插件将只会被安装一次
 * Vue.prototype.xxx 挂载任何想在全局频繁调用的 js 函数/对象
 */
import Vue from 'vue'
import App from './App'

// 阻止启动生产消息
Vue.config.productionTip = false

// 小程序页面组件和App.vue组件写法和引入方式是一致的，区分两者则需要设置
App.mpType = 'app'

// 引入全局uView
import uView from '@/components/uview-ui'
Vue.use(uView)

// 引入常用方法文件 | 绝对路径，@指向项目根目录，在cli项目中@指向src目录，JS文件不支持/开头方式引入
import tui from '@/utils/prompt'
Vue.prototype.tui = tui

// 引入Vuex状态管理
import store from '@/store/index'
Vue.prototype.$store = store

const app = new Vue({
	// store会定义全局方法，所以放入Vue实例对象里
	store,
	...App
})

// http拦截器，需传递Vue的实例对象(即每个页面的this)，且需在初始化App.vue之前配置请求信息
import httpInterceptor from '@/common/http.interceptor.js'
// 使用Vue.use(参数1, 参数2)：需保证里面返回的是install方法。参数1表示为Vue插件，参数2为Vue的实例对象
Vue.use(httpInterceptor, app)

// API集中管理，方便一些固定的请求参数可以不用显式的传入，只需传递参数
import httpApi from '@/common/http.api.js'
Vue.use(httpApi, app)


app.$mount()
